#ifndef CONTROLADOR_H_
#define CONTROLADOR_H_
#include <string>
#include <vector>

#include "Usuario.h"
#include "Livro.h"
#include "BDLivro.h"

using namespace std;
/*!
 * \brief Controlador Principal do sistema
 *
 * Controla as operações básicas do sistema, como
 * a autenticação dos usuários
 *
 */
class Controlador
{
private:
	/**
	 * \brief Diretório onde ficam os arquivos de dados
	 */
	string DirDados;

	/**
	 * \brief Usuário cliente/funcionário ativo no sistema
	 */
	Usuario UsuarioCorrente;

	/**
	 * \brief Instância para a classe BDLivro, para acesso
	 * à base de livros do sistema
	 */
	BDLivro Livros;

public:

	Controlador();
	virtual ~Controlador();
	void init();
	// Caso de Uso 1
	void CarregaLogins();
	Usuario CheckLogin(string login, string senha);

	// Caso de Uso 2
	long GetProximoLivroID();
	void AdicionaLivro(Livro novo_livro);
	// Caso de Uso 3
	Livro SelecionaLivro(long id);
	// Caso de Uso 4

	// Caso de Uso 5, 6 e 7
	Usuario *GetUsuario();
	void MontaPesquisa(int tipo_interesse);
	vector<Livro> PesquisaInteresses(string valor);
};

#endif /*CONTROLADOR_H_*/
